<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 已知字符串 var str = "abcacd" 编程实现以下功能。
    // a. 去重  "abcd"
    // b. 统计每个字符出现的次数，结果显示 a 2、b 1、c 2、d1
    // c. (原始字符串：var str = "aaaabbbbbbbccdaaaaa"  压缩统计后：a4b7c2d1a5)

    var str = "abcacd";

    // var unique = "";
    // for(var char of str){
    //     if(!unique.includes(char)){
    //         unique += char;
    //     }
    // }
    // console.log(unique); // "abcd"


    // 方法1:  根据去重后的字符串 依次统计每个字符出现的次数

    // var countStr = "";

    // for(var char of unique){
    //     // char -> 去重后的每个字符  (a  b  c  d)

    //     // 判断每个字符在原字符串中出现的次数
    //     var count = 0;

    //     for(var item of str){
    //         if(char == item){
    //             count ++;
    //         }
    //     }

    //     console.log(char,count);
    //     countStr += char + count;

    // }
    // console.log(countStr);


    // 方法2:  去重加统计  (对象的键名是字符串类型, 且键名是唯一的,但是重复对某个键名赋值后面的会覆盖前面的)

    // var str = "abcacd";

    // var data = {};

    // for(var char of str){ // 遍历得到str的每个字符
    //     // data[char] = 1;   // data["a"]  data["b"]  将字符作为对象的键名 -> 没有就新增(有就覆盖)   

    //     // 直接覆盖太可惜  -> 没有就新增(键值为1)  有就键值自增
    //     if(data[char]){
    //         data[char] ++;
    //     }else{
    //         data[char] = 1;
    //     }
    // }

    // console.log(data);

    // var unique = "";
    // var countStr = "";
    // for(var key in data){
    //     var val = data[key]; 

    //     unique += key;
    //     countStr += key + val;
    // }

    // console.log(unique);
    // console.log(countStr);


    // 压缩统计: 相邻的字符有多少个?
    // 原始字符串：var str = "aaaabbbbbbbccdaaaaa"  压缩统计后：a4b7c2d1a5
    //        01234
    var str = "aaaabbbbbbbccdaaaaa";

    var countStr = "";
    var count = 0; // 1 2 3
    for(var i=0;i<str.length;i++){
        // str.charAt(i);   当前字符
        // str.charAt(i+1); 后一个字符

        if(str.charAt(i) ==  str.charAt(i+1)){
            count++;
        }else{
            count++;
            countStr += str.charAt(i) + count;
            count = 0;  //为了方便下次开始计数
        }
    }
    console.log(countStr);


    //         12    
    var str = "aaaabbbbbbbccdaaaaa";

    var countStr = "";
    var count = 1; // 1 2 3
    for(var i=0;i<str.length;i++){
        // str.charAt(i);   当前字符
        // str.charAt(i+1); 后一个字符

        if(str.charAt(i) ==  str.charAt(i+1)){
            count++;
        }else{
            countStr += str.charAt(i) + count;
            count = 1;  //为了方便下次开始计数
        }
    }
    console.log(countStr);

  

</script>
</html>